/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.ucsur.tp.colegio.daos;


import edu.ucsur.tp.colegio.beans.ServicioClienteBean;
import edu.ucsur.tp.colegio.beans.TipoBean;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import edu.ucsur.tp.colegio.connections.DBConnection;

/**
 *
 * @author Administrador
 */
public class MySqlServicioClienteSchoolDao {
    
    public ServicioClienteBean getServicioCliente(String codigoServicio){
        
         String sql = "SELECT * FROM servicio WHERE codigoServicio = ?";
         
           try {
      //1. Obtener la conexi�n
      Connection conn = DBConnection.getConnection();
      
      //2. Obtenemos la sentencia Java (PreparedStatement)
      PreparedStatement pstmt = conn.prepareStatement(sql);
      //-- 2.1. Setear los par�metros din�micos
      pstmt.setString(1, codigoServicio);
      //3. Ejecutar la sentencia (se recupera en un cursor)
      ResultSet rs = pstmt.executeQuery();
      //4. Recorriendo el cursor
      if (rs.next()) {
        ServicioClienteBean servicio = new ServicioClienteBean();
        
      servicio.setCodigoServicio(rs.getString("codigoServicio"));
      servicio.setNombre(rs.getString("nombre"));
      servicio.setTipo(new TipoBean(rs.getString("codigotipo"), "codigotipo"));
      servicio.setCosto(rs.getDouble("costo"));
     // servicio.setSede(new SedeBean(rs.getString("codigosede"), "codigosede"));
      servicio.setResponsable(rs.getString("responsable"));
      servicio.setTelefono(rs.getString("telefono"));
      servicio.setEmail(rs.getString("email"));
      return servicio;
      }
      //5. Cerrando los recursos JDBC
      rs.close();
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
    return null;
      
    }
    
    // public List<ServicioClienteBean>
    
    public List<ServicioClienteBean> getListaServicioClientePorFiltros(String filtroNombre, String filtroResponsable) {
    List<ServicioClienteBean> listaServicioCliente = new ArrayList<ServicioClienteBean>();
    
    String sql = "SELECT * FROM servicio WHERE nombre like ? ";
    try {
      //1. Obtener la conexi�n
      Connection conn = DBConnection.getConnection();
      //2. Obtenemos la sentencia Java (PreparedStatement)
      PreparedStatement pstmt = conn.prepareStatement(sql);
      //-- 2.1. Setear los par�metros din�micos
      pstmt.setString(1, "%" + filtroNombre + "%");
      pstmt.setString(2, "%" + filtroResponsable + "%");
      //3. Ejecutar la sentencia (se recupera en un cursor)
      ResultSet rs = pstmt.executeQuery();
      //4. Recorriendo el cursor
      while (rs.next()) {
        ServicioClienteBean serviciocliente = new ServicioClienteBean();
        serviciocliente.setCodigoServicio(rs.getString("codigoServicio"));
        serviciocliente.setNombre(rs.getString("nombre"));
        serviciocliente.setTipo(new TipoBean(rs.getString("codigotipo"), "codigotipo"));
        serviciocliente.setCosto(rs.getDouble("costo"));
      //  serviciocliente.setSede(new SedeBean(rs.getString("codigosede"), "codigosede"));
        serviciocliente.setResponsable(rs.getString("responsable"));
        serviciocliente.setTelefono(rs.getString("telefono"));
        serviciocliente.setEmail(rs.getString("email"));
        listaServicioCliente.add(serviciocliente);
      }
      //5. Cerrando los recursos JDBC
      rs.close();
      pstmt.close();
      conn.close();
      //6. Devolver la lista
      return listaServicioCliente;
    } catch (Exception ex) {
      ex.printStackTrace();
    }
    return null;
  }
    
    public void insertar(ServicioClienteBean serviciocliente) {
    String sql = "INSERT INTO servicio ( codigoServicio, nombre, costo, responsable, telefono, email ) ";
    sql += " VALUES ( ?, ?, ?, ?, ?, ? ) ";
    try {
      //1. Obtener la conexi�n
      Connection conn = DBConnection.getConnection();
      //2. Obtenemos la sentencia Java (PreparedStatement)
      PreparedStatement pstmt = conn.prepareStatement(sql);
      //-- 2.1. Setear los par�metros din�micos
      pstmt.setString(1, serviciocliente.getCodigoServicio());
      pstmt.setString(2, serviciocliente.getNombre());
      //pstmt.setString(3, serviciocliente.getTipo(new TipoBean(pstmt.setString("codigotipo"), "codigotipo")));
      pstmt.setDouble(3, serviciocliente.getCosto());
      pstmt.setString(4, serviciocliente.getResponsable());
      pstmt.setString(5, serviciocliente.getTelefono());
      pstmt.setString(6, serviciocliente.getEmail());
      //3. Ejecutar la sentencia (se recupera en un cursor)
      pstmt.executeUpdate();
      //7. Cerrando los recursos JDBC
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  } 
   
    public void eliminar(String codigoServicio) {
    String sql = "DELETE FROM servicio WHERE codigoServicio = ? ";
    try {
      //1. Obtener la conexi�n
      Connection conn = DBConnection.getConnection();
      //2. Obtenemos la sentencia Java (PreparedStatement)
      PreparedStatement pstmt = conn.prepareStatement(sql);
      //-- 2.1. Setear los par�metros din�micos
      pstmt.setString(1, codigoServicio);
      //3. Ejecutar la sentencia (se recupera en un cursor)
      pstmt.executeUpdate();
      //7. Cerrando los recursos JDBC
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
    
   public void actualizar(ServicioClienteBean serviciocliente) {
    String sql = "UPDATE servicio SET codigoServicio = ?, nombre = ?, costo = ?, responsable = ?, telefono = ?, email = ? WHERE codigoServicio = ? ";
    try {
      //1. Obtener la conexi�n
      Connection conn = DBConnection.getConnection();
      //2. Obtenemos la sentencia Java (PreparedStatement)
      PreparedStatement pstmt = conn.prepareStatement(sql);
      //-- 2.1. Setear los parametros dinamicos
      pstmt.setString(1, serviciocliente.getCodigoServicio());
      pstmt.setString(2, serviciocliente.getNombre());
      pstmt.setDouble(3, serviciocliente.getCosto());
      pstmt.setString(4, serviciocliente.getResponsable());
      pstmt.setString(5, serviciocliente.getTelefono());
      pstmt.setString(6, serviciocliente.getEmail());
      //3. Ejecutar la sentencia (se recupera en un cursor)
      pstmt.executeUpdate();
      //7. Cerrando los recursos JDBC
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    } 
   }   
       
}
